package com.mercury.ec.module.air.controller.admin.order.vo.orderprice;

import com.mercury.ec.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import static com.mercury.ec.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 机票订单价格分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class AirOrderPricePageReqVO extends PageParam {

    @Schema(description = "原价格id", example = "26397")
    private Long originOrderPriceId;

    @Schema(description = "订单id", example = "30802")
    private Long orderId;

    @Schema(description = "订单行程id", example = "31537")
    private Long orderRouteId;

    @Schema(description = "订单乘客id", example = "29136")
    private Long orderPassengerId;

    @Schema(description = "票价级别FareBasis", example = "ZPR7WNNP")
    private String fareBasis;

    @Schema(description = "出票代码")
    private String airlineIssueNo;

    @Schema(description = "票号")
    private String ticketNo;

    @Schema(description = "终止票号")
    private String ticketLastNo;

    @Schema(description = "打票机号")
    private String ticketVendingMachineNo;

    @Schema(description = "编码客票状态", example = "VOID")
    private String ticketStatus;

    @Schema(description = "出票失败原因 字典（air_order_ticket_fail_cause）")
    private Integer ticketFailCause;

    @Schema(description = "改签状态 字典（air_order_change_status 0-未改签，2-已改签）", example = "1")
    private Integer changeStatus;

    @Schema(description = "改签员id 见表（system_users.id）", example = "10214")
    private Long changeUserId;

    @Schema(description = "改签部门id 见表（system_dept.id）", example = "11971")
    private Long changeDeptId;

    @Schema(description = "改签时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] changeTime;

    @Schema(description = "退票状态 字典（air_order_return_status 0-未退票，2-已退票）", example = "2")
    private Integer returnStatus;

    @Schema(description = "退票订单类型 字典（air_order_return_order_type 1-退票/2-废票）", example = "1")
    private Integer returnOrderType;

    @Schema(description = "退票类型 字典（air_order_return_type 1-自愿/2-非自愿）", example = "1")
    private Integer returnType;

    @Schema(description = "退票原因 字典（air_order_return_cause）", example = "1")
    private Integer returnCause;

    @Schema(description = "退票员id 见表（system_users.id）", example = "1706")
    private Long returnUserId;

    @Schema(description = "退票部门id 见表（system_dept.id）", example = "5398")
    private Long returnDeptId;

    @Schema(description = "退票时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] returnTime;

    @Schema(description = "调账状态 字典（air_order_adjust_status 0-未调账，2-已调账）", example = "1")
    private Integer adjustStatus;

    @Schema(description = "调账类型 字典（air_order_adjust_type 1-/2-/3-）", example = "2")
    private Integer adjustType;

    @Schema(description = "调账员id 见表（system_users.id）", example = "26248")
    private Long adjustUserId;

    @Schema(description = "调账部门id 见表（system_dept.id）", example = "23527")
    private Long adjustDeptId;

    @Schema(description = "调账时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] adjustTime;

    @Schema(description = "附加费")
    private BigDecimal saleAdditionalFee;

    @Schema(description = "服务费")
    private BigDecimal saleServiceFee;

    @Schema(description = "升舱费")
    private BigDecimal saleUpgradeFee;

    @Schema(description = "改期费")
    private BigDecimal saleChangeFee;

    @Schema(description = "退票费")
    private BigDecimal saleReturnFee;

    @Schema(description = "票面价", example = "17704")
    private BigDecimal saleTicketPrice;

    @Schema(description = "销售价", example = "30919")
    private BigDecimal salePrice;

    @Schema(description = "已用票面价", example = "8877")
    private BigDecimal saleUsedPrice;

    @Schema(description = "机建税")
    private BigDecimal saleAirportTax;

    @Schema(description = "燃油税")
    private BigDecimal saleOilTax;

    @Schema(description = "销售税")
    private BigDecimal saleTax;

    @Schema(description = "代理费率")
    private BigDecimal saleAgencyFeeRate;

    @Schema(description = "代理费")
    private BigDecimal saleAgencyFee;

    @Schema(description = "后返费率")
    private BigDecimal saleBackRebateFeeRate;

    @Schema(description = "后返费")
    private BigDecimal saleBackRebateFee;

    @Schema(description = "记奖价", example = "28158")
    private BigDecimal salePrizePrice;

    @Schema(description = "记奖税")
    private BigDecimal salePrizeTax;

    @Schema(description = "销售金额")
    private BigDecimal saleAmount;

    @Schema(description = "应收")
    private BigDecimal saleReceivable;

    @Schema(description = "实收")
    private BigDecimal saleReceipts;

    @Schema(description = "支付状态 字典（system_pay_status）", example = "1")
    private Integer salePayStatus;

    @Schema(description = "支付科目id 见表（basic_pay_subject.id）", example = "11044")
    private Long salePaySubjectId;

    @Schema(description = "支付方式id 见表（basic_pay_type.id）", example = "5098")
    private Long salePayTypeId;

    @Schema(description = "支付账号", example = "20584")
    private String salePayAccount;

    @Schema(description = "支付单号")
    private String salePayOrderNo;

    @Schema(description = "支付时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] salePayTime;

    @Schema(description = "是否在线支付")
    private Boolean salePayOnline;

    @Schema(description = "采购商id 见表（basic_vendor.id）", example = "14000")
    private Long purchaseId;

    @Schema(description = "采购单号")
    private String purchaseOrderNo;

    @Schema(description = "采购附加费")
    private BigDecimal purchaseAdditionalFee;

    @Schema(description = "采购服务费")
    private BigDecimal purchaseServiceFee;

    @Schema(description = "采购升舱费")
    private BigDecimal purchaseUpgradeFee;

    @Schema(description = "采购改期费")
    private BigDecimal purchaseChangeFee;

    @Schema(description = "采购退票费")
    private BigDecimal purchaseReturnFee;

    @Schema(description = "采购票面价", example = "18086")
    private BigDecimal purchaseTicketPrice;

    @Schema(description = "采购价", example = "29611")
    private BigDecimal purchasePrice;

    @Schema(description = "已用采购票面价", example = "32526")
    private BigDecimal purchaseUsedPrice;

    @Schema(description = "采购机建税")
    private BigDecimal purchaseAirportTax;

    @Schema(description = "采购燃油税")
    private BigDecimal purchaseOilTax;

    @Schema(description = "采购税")
    private BigDecimal purchaseTax;

    @Schema(description = "采购代理费率")
    private BigDecimal purchaseAgencyFeeRate;

    @Schema(description = "采购代理费")
    private BigDecimal purchaseAgencyFee;

    @Schema(description = "采购后返费率")
    private BigDecimal purchaseBackRebateFeeRate;

    @Schema(description = "采购后返费")
    private BigDecimal purchaseBackRebateFee;

    @Schema(description = "采购记奖价", example = "8433")
    private BigDecimal purchasePrizePrice;

    @Schema(description = "采购记奖税")
    private BigDecimal purchasePrizeTax;

    @Schema(description = "采购金额")
    private BigDecimal purchaseAmount;

    @Schema(description = "采购应付")
    private BigDecimal purchasePayable;

    @Schema(description = "采购实付")
    private BigDecimal purchasePayment;

    @Schema(description = "采购支付状态 字典（system_pay_status）", example = "2")
    private Integer purchasePayStatus;

    @Schema(description = "采购支付科目id 见表（basic_pay_subject.id）", example = "5867")
    private Long purchasePaySubjectId;

    @Schema(description = "采购支付方式id 见表（basic_pay_type.id）", example = "30994")
    private Long purchasePayTypeId;

    @Schema(description = "采购支付账号", example = "12883")
    private String purchasePayAccount;

    @Schema(description = "采购支付单号")
    private String purchasePayOrderNo;

    @Schema(description = "采购支付时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] purchasePayTime;

    @Schema(description = "采购是否在线支付")
    private Boolean purchasePayOnline;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

}
